getredash/redashがローカル環境でError code 139と出て起動しなくなっていたので取り敢えず暫定復旧させてみた
MacbookPro上でRedashのデモンストレーション準備をToDoとし、Dockerにて試してみたところ以下のエラーがでて全く立ち上がらない状態となりました。
redash_server_1 exited with code 139
以前は問題なく立ち上がっていたため、なにか環境へ不用意な変更を入れてしまったかと確認してみてもDocker Desktopのバージョンが多数上がっていた程度。
念の為Issueを確認してみたところ、個人の環境に依存したものではありませんでした。
Issue自体はCloseとなっていますが、まだfixはされていません。暫定とはいえ立ち上げることが出来たため、具体的な対処方法について書いてみました。
対処方法
getredash/redashのdocker-compose.yml内に環境変数を指定します。
x-redash-environment: &redash-environment REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_RATELIMIT_ENABLED: "false" REDASH_MAIL_DEFAULT_SENDER: "redash@example.com" REDASH_MAIL_SERVER: "email" REDASH_ENFORCE_CSRF: "true" + REDASH_ENABLED_QUERY_RUNNERS: "redash.query_runner.mysql,redash.query_runner.pg"
あとは通常通り起動させるだけです。起動後は0.0.0.0:5000を開きます。
cd redash/
docker-compose -f docker-compose.yml run --rm server create_db
docker-compose up -d
見栄えはおいておくとして、アクセスできました。
なお、Issue末尾にあったdocker-compose.ymlでも以下のコマンドで起動確認済みです。
docker-compose up -d docker-compose -f docker-compose.yml run --rm redash create_db
あとがき
REDASH_ENABLED_QUERY_RUNNERS
に直接redash.query_runner.mysql
やredash.query_runner.pg
を設定することで有効になる辺り、default_query_runnersの初めに来るクラウド環境用設定による問題の可能性があります。非常に検証し辛いところです。
default_query_runners = [ "redash.query_runner.athena", "redash.query_runner.big_query", "redash.query_runner.google_spreadsheets", "redash.query_runner.graphite", "redash.query_runner.mongodb", "redash.query_runner.couchbase", "redash.query_runner.mysql", "redash.query_runner.pg",
redash/__init__.py at master · getredash/redash · GitHub - https://github.com/
enabled_query_runners = array_from_string( os.environ.get("REDASH_ENABLED_QUERY_RUNNERS", ",".join(default_query_runners)) )
redash/__init__.py at master · getredash/redash · GitHub - https://github.com/
Issueに対してPRがないままCloseされているのが気がかりなのですが、取り急ぎ立てたい人はこの記事のdocker-compose.ymlを参考にしてみてください。